package datatypes.r2.foundation.impl;

import datatypes.r2.basic.II;
import datatypes.r2.collectionsofquantities.IVL;
import datatypes.r2.foundation.BL;
import datatypes.r2.foundation.HXIT;

/**
 * A generic data type extension that adds a time range and/or link to the
 * ControlAct associated with the creation of the data on any data value
 * whatever its data type.
 * 
 * HXIT adds the controlActIdRef property to the the base type T. In addition,
 * if the base type T does not possess a validTime property, the HXIT adds that
 * property to the base type. If, however, the base type T does have a valid
 * time property (currently only EN), that property is mapped to the valid time
 * property of the HXIT and the HXIT constraints on validTime apply.11
 * 
 * The time range is the time in which the information represented by the value
 * is (or was) valid. The ControlAct id reference indicates the event
 * responsible for the value of the data type. The time range is not the time
 * during which any particular system considered this information valid (as in,
 * an audit trail), though the link to the control act may provide some
 * information of relevance in this regard.
 * 
 * @author Obama
 * 
 * @param <T>
 */

public class HistoryItem<T> implements HXIT<T> {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private II controlActIdRef;

	/**
	 * The time interval during which the given information was, is, or is
	 * expected to be valid. The interval can be closed-- i.e. finite and
	 * defined—or open—i.e. infinite or undefined —on either side. The interval
	 * cannot be just a width, nor can the width be zero
	 */
	@Override
	public IVL validTime() {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * A predicate expressing a chronological order relation that is asymmetric
	 * and transitive, between this HXIT and another HXIT.
	 * 
	 * A HXIT comes before another in a sequence of history items (HIST) if the
	 * high boundary of the validTime is less or equal to the low boundary of
	 * the other interval.
	 */
	@Override
	public BL comesBefore(HXIT<T> t) {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * The identifier of the ControlAct associated with setting the data type to
	 * its specified value.
	 * 
	 * By referencing a particular ControlAct, the property links to all of the
	 * information surrounding that ControlAct, such as who made the change,
	 * when it was made, why it was made, what system originated the change,
	 * etc.
	 */
	@Override
	public II controlActIdRef() {
		// TODO Auto-generated method stub
		return controlActIdRef;
	}

}
